package top.infopub.mgr.bpa.service;

import com.github.pagehelper.Page;
import top.infopub.dto.bpa.PrimarySureDto;
import top.infopub.generic.GenericService;
import top.infopub.mgr.bpa.domain.OutcaeSureDomain;
import top.infopub.mgr.bpa.vo.OutcaeSureVo;
import top.infopub.model.bpa.OutcaeSure;
import top.infopub.model.bpa.OutcaeSureAtt;
import top.infopub.model.bpa.OutcaeSureDetail;
import top.infopub.model.bpa.OutcaeSureSub;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface OutcaeSureService extends GenericService<OutcaeSure, String> {
 
    /**
     * 根据条件查询对外建安产值确权记录
     * @param OutcaeSureVo
     * @return 
     * @see
     */
    Page<OutcaeSureDomain> selectByDomainWhere(Page<OutcaeSureDomain> page,
                                               OutcaeSureVo outcaeSureVo);

    /**
     * 根据条件查询对外建安产值确权记录--我审批的列表
     * @param OutcaeSureVo
     * @return 
     * @see
     */
    Page<OutcaeSureDomain> selectMyCheckByDomainWhere(Page<OutcaeSureDomain> page,
                                                      OutcaeSureVo outcaeSureVo);

    /**
     * 执行新增
     */
    void saveOutcaeSure(OutcaeSure outcaeSure, List<OutcaeSureSub> outcaeSureSubs,
                        List<OutcaeSureDetail> outcaeSureDetails,
                        List<OutcaeSureAtt> outcaeSureAtts);
    
    /**
     * 根据项目编号查询当月确权金额
     */
    BigDecimal selectBySure(Map<String, Object> map);
    
    /**
     * 根据项目编号查询开累确权金额
     */
    BigDecimal selectDecimalByProCode(Map<String, Object> map);
    
    /**
     * 详情
     */
    OutcaeSureVo queryById(String id);

    String insertById(PrimarySureDto primarySureDto, String creator);

    void updateByIdSelective(PrimarySureDto primarySureDto, String modifier);

}